<!--
 * @Author: lisong
 * @Date: 2023-04-17 16:22:20
 * @LastEditors: lisong
 * @LastEditTime: 2023-04-24 16:38:38
 * @Description: 项目评分
-->
<template>
  <rk-grid
    ref="rkGridRef"
    title=""
    :boxConfig="false"
    :seqConfig="false"
    :data="tableData"
    :columns="tableColumns"
    :rowConfig="{
      isHover: false,
      isCurrent: false
    }"
    :spanMethod="mergeRowMethod"
    :pagerConfig="false"
    :showOverflow="false"
    :toolbarConfig="false"
  >
  </rk-grid>
</template>

<script setup name="ProjectReviewPanel">
// 向上触发的方法
const emits = defineEmits([
  'setFormItemValue'
])
const loading = ref(false)

const props = defineProps({
  // 组件的名称，用于组织插槽数据，提供给表单设计器以及渲染器（必须定义）
  title: {type: String, default: '项目评分表格'},
  // 表单数据信息
  formData: {type: Object, default: () => {
    return {
      proId: 'test'
    }
  }}
})

// ----- 表格相关操作
// 表格的模板引用
const rkGridRef = ref()
const queryParams = ref({
  billId: '',
  zqlxIs: 'txly00'
})
const tableColumns = ref([
  { field: 'PFBZ_ORDER', title: '序号', width: 120, align: 'left' },
  { field: 'SCORE_TYPE', title: '条目类型', width: 120, align: 'left', visible: false },
  { field: 'ENTRY_LEV1', title: '一级条目', width: 120, align: 'left' },
  { field: 'ENTRY_LEV2', title: '二级条目', width: 200, align: 'left' },
  { field: 'REVIEW_DESC', title: '评审内容', width: 350, align: 'left' },
  { field: 'REVIEW_STANDARD', title: '评审标准', width: 120, align: 'center' },
  { field: 'FILE_NAME', title: '所在文件名称', width: 200, align: 'left' },
  { field: 'FILE_PLACE', title: '所在文件位置', width: 200, align: 'left' },
  { field: 'REMARK', title: '备注', width: 350, align: 'left' },
])
const tableData = ref([
  {
      "PFBZ_ORDER": 1,
      "PFBZ_ID": "21275AB868264980A3669A73491289DF",
      "ENTRY_LEV1": "评分要点",
      "ENTRY_LEV2": "（二）  项目材料齐备性",
      "REVIEW_DESC": "项目材料齐备性（30分）——建设项目初步设计5分。",
      "REVIEW_STANDARD": "(5)",
      "SCORE_TYPE": "1",
      "SCORE_RANGE": 5,
      "REMARK": null,
      "XMBZ_ID": null,
      "FILE_NAME": null,
      "FILE_PLACE": null,
      "FILE_ID": null
  },
  {
    "PFBZ_ORDER": 2,
    "PFBZ_ID": "3AF7DEA724444F1E8D3B457502F0CA7F",
    "ENTRY_LEV1": "评分要点",
    "ENTRY_LEV2": "（二）  项目材料齐备性",
    "REVIEW_DESC": "项目材料齐备性（30分）——其中环评批复5分。",
    "REVIEW_STANDARD": "(5)",
    "SCORE_TYPE": "1",
    "SCORE_RANGE": 5,
    "REMARK": null,
    "XMBZ_ID": null,
    "FILE_NAME": null,
    "FILE_PLACE": null,
    "FILE_ID": null
  },
  {
    "PFBZ_ORDER": 3,
    "PFBZ_ID": "48749C672F17417194B105C91858C7A6",
    "ENTRY_LEV1": "前置条件",
    "ENTRY_LEV2": "（三）  资金投入方向领域核查",
    "REVIEW_DESC": '新增债券资金投向应符合国家相关政策文件要求，紧紧围绕国家政策和投资领域，聚焦“两新一重"、政治、经济、民生等领域，及时掌握国家政策导向，提早做好项目储备，做实做细项目库。如存在以下情况则不符合要求：（1）法律法规禁止的项目、楼堂馆所建设、“形象工程" “政绩工程"等中央明令禁止的项目；（2）土地储备类项目；（3）产业类项目；（4）商业酒店、写字楼、商品楼等房地产项目；（5）已办理竣工决算的项目；（6）对应资产、收益权存在抵质押情况的项目等。（7）作为政府投资基金、产业投资基金等各类股权基金；（8）用于置换存量债务；（9）用于企业注册资本金；（10）用于投入超概部分，且未取得超概批复的项目；（1 1）属于经常性支出的项目，如：不符合资本化条件的日常维修支出、人员工资、社保以及项目运营费用、缴纳税费、偿付债券利息、企业补贴等日常开支。',
    "REVIEW_STANDARD": "是/否",
    "SCORE_TYPE": "2",
    "SCORE_RANGE": 0,
    "REMARK": null,
    "XMBZ_ID": null,
    "FILE_NAME": null,
    "FILE_PLACE": null,
    "FILE_ID": null
  },
])
const mergeRowMethod = ({ row, _rowIndex, column, visibleData }) => {
  const fields = ['SCORE_TYPE', 'ENTRY_LEV1', 'ENTRY_LEV2']
  const cellValue = row[column.field]
  if (cellValue && fields.includes(column.field)) {
    const prevRow = visibleData[_rowIndex - 1]
    let nextRow = visibleData[_rowIndex + 1]
    if (prevRow && prevRow[column.field] === cellValue) {
      return { rowspan: 0, colspan: 0 }
    } else {
      let countRowspan = 1
      while (nextRow && nextRow[column.field] === cellValue) {
        nextRow = visibleData[++countRowspan + _rowIndex]
      }
      if (countRowspan > 1) {
        return { rowspan: countRowspan, colspan: 1 }
      }
    }
  }
}


// ----- emits 方法定义
/**
 * 向上触发的方法，修改表单中的字段信息
 *
 * @param {String} fieldName 字段名称
 * @param {String} fieldValue 字段值
 */
const emitSetFormItemValue = function (fieldName, fieldValue) {
  emits('setFormItemValue', fieldName, fieldValue)
}

// ----- 获取组件数据
/**
 * 获取投资计划数据的方法，暴露给表单调用，固定名称getCompData
 */
const getCompData = function () {
  const {fullData} = rkGridRef.value.getTableData()
  return {
    'reviewApply_data': JSON.parse(JSON.stringify(fullData))
  }
}


defineExpose({
  getCompData
})

</script>

<style lang="scss" scoped>
:deep(.gs-cell-bg) {
  background-color: #e6e6e6;
}
</style>
